Construction d'un modèle de scoring

Mise en œuvre d'un outil de "scoring" qui calcule la probabilité de remboursement de crédit par un client.

Objectif

Sommaire

  1. Compréhension de la problématique métier
  2. Description du jeu de données
  3. Transformation du jeu de données (nettoyage et feature engineering)
  4. Comparaison et synthèse des résultats pour les modèles utilisés
  5. Interprétabilité du modèle
  6. Conclusion

Ci dessous la table des matières :

1. Compréhension de la problématique métier

Enjeux

Pour accorder un crédit, l'entreprise Home Credit doit estimer la solvabilité d'un client. Elle souhaite donc développer une classification automatique de scoring pour décider si un prêt peut être accordé ou non.

Il s'agit d'un problème de classification supervisée. Elle consiste à attribuer une classe à chaque objet à catégoriser, en se fondant sur des données statistiques. Toutes les données sont étiquetées et l'algorithme apprend à prédire le résultat des données d'entrée.

L'algorithme que nous mettrons en place doit permettre de :

Il s'agit en particulier d'identifier les demandeurs à risque en fonction des données disponibles, car le coût de ces demandeurs est très élevé pour l'organisme. En effet, des sommes importantes sont engagées pour chaque prêt.

Hypothèse

Une personne physique est dite solvable lorsque la valeur de l’ensemble de ses biens est capable de couvrir les dettes qu’elle contracte.

Pour savoir si un client est capable de régler ses dettes, il faut se procurer des informations sur l’état de sa santé économique. Une enquête de solvabilité consiste à analyser différents indicateurs de rentabilité et de les comparer au chiffre d’affaires et au montant des capitaux propres de son client.

Ces éléments donnent un aperçu de l’état de ses liquidités, de son niveau d’endettement, en somme de sa capacité à couvrir ses dettes et leurs échéances.

Afin d'évaluer la solvabilité d'un client, certains éléments sont à prendre en compte :

Les éléments cités ci-dessus se trouvent dans le jeu de données que nous avons à notre disposition.

2. Description du jeu de données

2.1 Données source

Commençons par afficher et éventuellement fusionner les données source.

Nous avons à notre disposition plusieurs fichiers sous format csv. Après analyse, il s'agit de 3 types d'informations :

Après examen du fichier descriptif des variables, nous avons décidé de sélectionner 3 fichiers source qui nous permettront de tirer le maximum d'informations utiles à l'entraînement du modèle :

Chargement de fichiers

Application train

Ce dataset compte :

Remarques :

  1. Le fichier contient les informations concernant chaque demande de prêt auprès de la société Prêt à dépenser.
  2. Chaque emprunt a sa ligne et est identifié par la variable SK_ID_CURR.
  3. Le fichier fournit les données cruciales comme :
    • la variable TARGET
    • type de contrat (cach ou revolving)
    • le sexe du client
    • le montant du crédit
    • le montant des revenus
    • les annuités
    • la situation familiale, le niveau d'études etc

Bureau

Ce dataset compte :

Remarques :

  1. Le fichier bureau nous fournit des données concernant tous les crédits antérieurs des clients auprès d'autres institutions financières qui ont été rapportés au Bureau de crédit (une organisation privée émettant des rapports de crédit).
  2. Chaque crédit antérieur a sa ligne dans bureau. Un emprunt dans le fichier application peut avoir plusieurs crédits antérieurs. Pour chaque emprunt, il y a autant de lignes que de crédits enregistrés par le Bureau de crédit avant la date de demande.
  3. Ce dataset est particulièrement important parce qu'il nous permet d'avoir accès à des informations essentielles telles que :
    • l'historique de paiement (paiements en retard)
    • la longueur de l'historique de crédit (des durées plus longues sont considérées moins risquées car elles permettent d'avoir plus de recul)
    • les crédits en cours (avec la durée restante)
    • la dette restant à payer
    • les nouveaux crédits
    • la limite de crédit disponible sur la carte de crédit
    • le type de crédit

Cela dit, vérifions le nombre réél de clients faisant partie de cette base de données en calculant le nombre d'ID client :

Credit Card Balance

Ce dataset compte :

Remarques :

  1. Le fichier 'credit card balance' fournit des données mensuelles sur les cartes de crédit antérieures.
  2. Chaque ligne représente un mois de solde, et une même carte de crédit peut avoir de nombreuses lignes.
  3. On retrouve dans le fichier les informations telles que :
    • le solde par mois avant la date de demande
    • la limite de la carte de crédit
    • les retards

Vérifions le nombre d'ID uniques :

Fusion de fichiers source

Au total, les trois fichiers fournissent les informations au sein des 160 variables.

A présent, nous allons fusionner les trois fichiers. Nous allons garder seulement les variables les plus intéressantes.

Application train

Pour la suite de l'analyse, nous allons sélectionner une partie de la base de données, vu sa volumétrie importante :

Bureau

Nous supprimons les variables inintéressantes :

Fusion de datasets

2.2 Analyse de la forme

Affichage du dataset final

Types de variables

Trois types de variables dans notre jeu de données : des float, des integers et des strings. Vérifions les modalités des features de type object :

Modalités

Les features de type object contiennent peu de modalités, sauf les suivantes :

Taux de valeurs manquantes

Vérifions à présent quel est le taux des NaN :

Nous observons très peu de variables avec plus de 50% de valeurs manquantes :

Seulement la dernière variable dépasse le seuil des 70%. Le jeu de données est donc plutôt bien rempli.

Pour la suite de l'analyse, nous allons supprimer colonnes comportant plus de 60% de valeurs manquantes :

Pour des raisons de soucis de mémoire, nous allons continuer notre analyse sur un échantillon df_sampled du dataset initial df.

Doublons

Vérifions s'il existe des doublons :

128 doublons ! Nous allons supprimer les doublons en gardant l'observation la plus récente :

2.2 Analyse du fond

Identification de la variable 'TARGET'

Nous remarquons la présence de la variable TARGET. Cette variable est binaire et contient les étiquettes suivantes :

Vérifions sa fréquence et distribution :

La variable TARGET contient deux modalités : 1 et 0.

Nous constatons également que la variable TARGET n'est pas équilibrée. Nous allons revenir à ce sujet plus loin dans notre analyse.

Vérifions les chiffres exactes d'emprunts :

Près de 93% de personnes ont réussi à rembourser leur prêt dans les délais, contre un peu plus de 7% qui ont fait défaut.

Avalyse univariée - variables qualitatives

Dans un premier temps nous allons identifier les variables qualitatives. Ensuite, nous allons afficher quelques indicateurs statistiques.

Conclusions

Nous allons à présent passer en revue certaines variables.

Distribution

Nous allons afficher toutes les variables catégorielles pour vérifier rapidement leur distribution :

Variable 'CODE_GENDER'

Conclusions

  1. Plus de femmes ont déposé les dossiers de demande de prêt : 65% contre 34% des hommes.
  2. Présence d'un genre inconnu : XNA => observations à remplacer par le mode de la variable (F)

Variable 'NAME_FAMILY_STATUS'

Conclusions

  1. La plupart des demandeurs de prêt sont mariés.
  2. 14% sont célibataires.
  3. La modalité Unknown doit disparaître - à remplacer par le mode :

Variable 'NAME_INCOME_TYPE'

Conclusions

  1. La plupart des demandeurs de prêt sont employés.
  2. 23% des demandeurs sont associés.
  3. Moins de 1% sont chômeurs ou étudiants ou en congé maternité.

Variable 'NAME_EDUCATION_TYPE'

Conclusions

  1. La grande majorité des demandeurs de prêt déclarent avoir terminé leur éducation au niveau de l'enseignement secondaire.
  2. 24% des demandeurs de prêt déclarent avoir terminé des études supérieures.
  3. 0,05% ont atteint un "Academic degree".

Avalyse univariée - variables quantitatives

Dans un premier temps nous allons identifier les variables quantitatives de type INTEGER, ensuite les FLOAT.

INTEGER

Remarques

19 variables de type int figurent dans le dataset.

Analysons de plus près les variables qui semblent incohérentes.

Variables DAYS_BIRTH, DAYS_EMPLOYED et DAYS_CREDIT

Nous constatons que les chiffres des variables préfixées par DAYS_ sont négatifs. La raison est assez simple : le calcul est fait en arrière à partir du jour de dépôt du dossier. De plus, les chiffres représentent les jours, or il serait plus intéressant de voir ces variables exprimées en années.

Le calcul à effectuer :

Attention, nous obtenons une valeur max qui non seulement est positive, mais en plus indique 1000 années... Il s'agit clairement d'un outlier. Essayons de visualiser le résultat :

Il s'agit d'un seul outlier. Il suffit donc de le supprimer.

Passons également la variable DAYS_CREDIT au positif :

Les résultats sont corrects à présent. Vérifions les résultats :

Distribution

Un coup d'oeil rapide sur la feature CNT_CHILDREN pour se rendre compte de sa distribution :

Variable CNT_CHILDREN

Conclusions

  1. La grande majorité des demandeurs de prêts n'ont pas de progéniture.
  2. Seulement 19% ont un enfant, et 8% en ont deux.
  3. Certaines personnes ont déclaré avoir 6 et 7 enfants.

FLOAT

Remarques

23 variables de type float figurent dans le dataset.

A vérifier, il s'agit très probablement de valeurs aberrantes.

Analysons de plus près certaines variables.

Variable AMT_INCOME_TOTAL

La variable contient des valeurs aberrantes. Est-ce lié aux disparités dans la société ? Nous allons vérifier cela en affichant les revenus en fonction de l'éducation reçue et du secteur d'activité :

Nous pouvons en conclure que les revenus hors norme sont attribués aux personnes issues du domaine du Business. Un point extrême venant du Transport type 4.

Il semblerait que les revenus hors norme sont attribués aux personnes diplômées.

Nous allons remplacer les outliers par la moyenne (pour les valeurs au dessus de 3 écarts type) :

Variable AMT_CREDIT_SUM

Nous constatons de nombreux outliers au sein de cette feature. Idem, essayons de les remplacer par la moyenne (également pour les valeurs au dessus de 3 écarts type) :

Distribution

Plus loin, nous allons procéder à une normalisation, étant donné les plages de valeurs très différentes parmi les variables.

2.2.3 Analyse bivariée

L'analyse univariée nous a permis d'avoir un aperçu général du profil des emprunteurs. A présent, nous allons explorer les features en rapport avec la variable TARGET, afin d'émettre des hypothèses plus poussées.

Variables qualitatives versus TARGET

Nous allons passer en revue toutes les variables quantitatives et afficher leur rapport avec la variable TARGET, pour ensuite regarder les résultats de plus près.

Gender

Situation familiale

Progéniture

Education

Situation professionnelle

Secteur d'activité

Conclusions

  1. Gender :

    • Une plus grande proportion de femmes a réussi à rembourser le crédit dans les délais.
    • Les femmes ont été plus nombreuses à faire une demande de crédit.
  2. Situation familiale :

    • Les veufs / veuves ont eu le moins de difficultés à payer le crédit.
    • Pas d'autres tendances à signaler au sein de cette variable.
  3. Progéniture :

    • Les personnes ayant 6 enfants n'ont pas réussi à régler la dette.
    • Les parents de 7 enfants ont payé le crédit sans soucis.
  4. Education :

    • Les universitaires se caractérisent par un taux de solvabilité très élevé.
    • Les personnes dont le niveau d'éducation est "Lower secondary" ont rencontré le plus de difficultés pour rembourser le crédit.
  5. Situation professionnelle :

    • Les employés du secteur IT n'ont quasiment pas eu de difficultés de paiement.
    • 70% des personnes embauchées en tant que "Low-skills laborers" ont fait défaut.
  6. Secteur d'activité :

    • Les employés du secteur Culture, certains traders ainsi que les employés dans l'industrie (type 12 et 13) se caractérisent par un taux de solvabilité très élevé.
    • Les employés dans le secteur de la Religion ont eu le plus de difficultés de règlement.

Remarque

Nous remarquons la présence de modalités indéfinies dans la variable ORGANIZATION_TYPE => XNA

Variables quantitatives versus TARGET

Dans ce chapitre nous allons étudier les corrélations entre les variables quantitatives de type AMT_ et la TARGET.

Variables de type AMT_

Les revenus : variable AMT_INCOME_TOTAL

Conclusion

Le montant du crédit : variable AMT_CREDIT

Conclusion

Le prix du bien : variable AMT_GOODS_PRICE

Conclusion

Les annuités : variable AMT_ANNUITY

Conclusion

2.2.6 Corrélations entre les variables

Une façon d'aborder les corrélations entre les variables est la corrélation de Pearson. La méthode .corr() peut nous fournir une idée d'intensité dans les relations. Nous allons adopter l'interprétation suivante :

Nous allons utiliser une heatmap pour visualiser les corrélations :

TARGET versus les features corrélées positivement

Nous remarquons une forte corrélation entre les features :

et une moins forte entre les features suivantes :

TARGET versus les features corrélées négativement

Remarques

Par la suite nous allons comparer l'influence des variables les plus fortement corrélées avec la cible.

Correlations positives

REGION_RATING_CLIENT versus TARGET

Comme vu précédemment, il s'agit probablement de la même donnée : REGION_RATING_CLIENT et REGION_RATING_CLIENT_W_CITY. Leur relation avec la cible est égale : 0,061. Visualisons cette relation grâce au plot KDE :

Correlations négatives

DAYS_BIRTH versus TARGET : -0,070

Il semblerait que plus l'âge augmente, moins le demandeur serait susceptible de faire défaut.

L'histogramme des âges a montré une répartition assez homogène des âges. Esayons de visualiser la corrélation à l'aide du plot KDE.

Nous observons une asymétrie au niveau de l'âge jeune :

Correlations négatives

Les 3 variables avec les corrélations négatives les plus fortes sont :

Leur définition : un score normalisé à partir sources de données extérieures.

Visualisons leur impact sur la cible :

Conclusions

Parmi les trois variables, c'est la EXT_SOURCE_3 qui semble avoir la corrélation la plus élevée avec la cible (nous observons la plus grande différence entre les valeurs de la cible).

La corrélation n'est pas forte, en réalité toutes les relations sont considérées comme très faibles, mais pour autant elle pourra sûrement être utile dans un modèle de machine learning pour prédire si oui ou non un emprunteur remboursera dans les délais.

Analysons à présent les corrélations entre les variables les plus corrélées avec la cible :

Conclusions

  1. Les 3 variables EXT_SOURCE ont une corrélation négative avec la cible
    • cela signifie que plus la valeur de EXT_SOURCE augmente, plus le client est susceptible de devenir un target 0
  2. La variable DAYS_BIRTH est fortement corrélée, de façon positive, avec EXT_SOURCE_1
    • cela pourrait signifier que l'un des facteurs dans ce score est l'âge du client
  3. Une corrélation négative est observée entre EXT_SOURCE_2 et REGION_RATING_CLIENT
    • ceci pourrait indiquer que l'un des facteurs dans ce score est le score de la région d'habitation du client.

Avant la modélisation

Fichier csv pour prétraitement.